package com.reservation.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.reservation.entity.User;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户注册
     *
     * @param user 用户信息
     * @return 注册成功的用户信息
     */
    User register(User user);
    
    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 密码
     * @return JWT令牌
     */
    String login(String username, String password);
    
    /**
     * 获取用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    User getUserInfo(Long id);
    
    /**
     * 修改用户信息
     *
     * @param user 用户信息
     * @return 修改后的用户信息
     */
    User updateUserInfo(User user);
    
    /**
     * 修改密码
     *
     * @param id          用户ID
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean updatePassword(Long id, String oldPassword, String newPassword);
    
    /**
     * 分页查询用户列表
     *
     * @param page     分页参数
     * @param username 用户名（可选）
     * @param name     姓名（可选）
     * @param role     角色（可选）
     * @return 用户列表
     */
    IPage<User> getUserList(Page<User> page, String username, String name, String role);
    
    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long id);
}